package com.zijidelu.luframework.base;

/**
 * 类型转换工具。
 *
 * @author ZIJIDELU
 * @datetime 2025/11/9 09:04
 */
public interface TypeCaster {
    /**
     * 实例方法版本的类型转换，子类可以覆盖实现自定义转换逻辑
     *
     * @param <T> 目标类型
     * @return 转换后的对象
     */
    @SuppressWarnings("unchecked")
    default <T> T selfCast() {
        return (T) this;
    }

    /**
     * 强制类型转换，不进行类型检查
     * <p>
     * 注意：此方法在类型不兼容时会抛出 {@link ClassCastException}
     */
    @SuppressWarnings("unchecked")
    static <T> T cast(Object object) {
        return (T) object;
    }
}
